/**
*一个入口和一个出口，这个又可以组合成各个复杂的管子，但是对外还是一样的，就是一个管子
*TaskPipe,任务管子，有一个入口和一个出口，这个可以支持复杂的机构，TaskPipe里又含有复杂的TaskPipe结构
*但是复杂的TaskPipe对外就像一个正常的TaskPipe一样
*
*DBoxsM里持有各个Dbox的资源，并且持有各个大的TaskPipe（内部是各个子的TaskPipe的复杂结构）,
*提供一个接口StartTask();//启动一个任务流程,总任务完毕后会通知外部
*外部需要注册监听器来调用事件完毕的情况
*
*关于taskpipe的命名，tp0_xxx表示原子的pipe,没有嵌套。tp1_xxx表示了嵌套了几层
*
*做工作流的时候
*	1,先吧流程图弄清楚，
*	2,找到各个原子pipe,划分出正确的原子pipe,就是说不需要再分的pipe就是原子pipe
*	3,再由原子pipe构造出复合pipe
*	
*一个约束规则是pipe只能嵌套pipe,不能嵌套其他
*每个业务逻辑pipe都是唯一的针对特定应用的，不能多个流程而实用同一个pipe实例
*
*网络出错处理的稍后再弄
*/

package kgame5.kutil.ktaskpipe {
import kgame5.kutil.*;

import flash.events.*;

public class TaskPipe extends EventDispatcher{
	public static const 
		EVENTTYPE_TASKFLOW_OVER:String="EVENTTYPE_TASKFLOW_OVER";
		
	//_____________________Property______________________________
	
	//_____________________Method______________________________
	public function TaskPipe(){
	
	}
	
	/*
	//这个因为子类继承起来不灵活，所以先禁止使用这个了就
	//因为子类中的参数不固定，如果子类有一个参数，则编译的时候要报错，而且这里的这个继承没有多大的实际意义
	
	//master.smartDboxs.openPane();
	//master.smartDboxs.switchDboxs(-1,3);
	//在Start之前要执行打开面板和切换到制定面板
	
	public function StartX(...args){
		
	}
	//*/
	//关闭此taskPipe,释放相关资源
	public function Clear(){
		
	}
	//通知外部说流程做完,data表示想外部发送的数据
	public function notifyOver(bOK:Boolean=true,data:Object=null){
		this.dispatchEvent(new KEvent(EVENTTYPE_TASKFLOW_OVER,{bOK:bOK,data:data}));
	}
}//end of class
}